I. Field of the Disclosure
The technology of the disclosure relates generally to a bus structure for a System-on-a-Chip (SoC) for processor-based systems that provides a trace multicast feature.
II. Background
Modern System-on-Chips (SoCs) have a variety of non-invasive trace mechanisms provided to trace program flow, or execution, of Central Processing Units (CPUs) or Digital Signal Processors (DSPs), bus and specialized hardware activity, system performance metrics, and the like. These are generally low-level trace mechanisms. In addition to these traditional low-level trace mechanisms, “driver” level trace, such as Advanced Reduced instruction Set Computer (RISC) Machine (ARM) System Trace Macrocell (STM), is becoming an increasingly important SoC trace mechanism. In general, driver-level trace allows for driver-level instrumented trace by, for example, adding appropriate trace instructions at the driver level. For example, store instructions may be added to a video driver at relevant areas of the driver code in order to cause trace to be generated and optionally time-stamped.
Driver-level trace allows software developers to analyze the performance of code (e.g., speed, power, etc.). The intent of the driver-level trace is to be as non-intrusive as possible to the code to which instrumentation is added. In other words, once driver-level trace instrumentation is added to a piece of code, the resultant code should be as close to its original state as possible so that performance analysis results have the least amount of “driver” instrumentation error. However, in some situations, adding driver-level trace instrumentation to code can add an unacceptable amount of driver instrumentation error, perhaps completely obscuring a bug in the code. For example, in order to benchmark sections of code where every write or read to a system configuration register in a certain address range is traced in order to debug configuration/boot code bugs, blindly adding instrumentation to every store and load instruction would add an unacceptable amount of driver instrumentation error, perhaps completely obscuring the bug.
Thus, there is a need for systems and methods that enable a minimally invasive driver-level trace that overcomes the limitations discussed above.